package com.blue.crawler.engine;

import java.util.List;

import com.blue.crawler.annotation.CrawlerConfig;


/**
 * 列表－明细爬虫
 * 
 * @author zhengj
 * @since 1.0 2016年9月25日
 */
public interface ListDetailCrawl<T extends ListDetailModel>
{
	

	/**
	 * 分析列表页
	 * 
	 * @param html HTML文本
	 * @param config 爬虫配置
	 * @return 列表
	 */
	List<T> queryList(String html, CrawlerConfig config);
	
	/**
	 * 分析内容页
	 * 
	 * @param html HTML文本
	 * @param config 爬虫配置
	 * @param model 内容对象
	 * @return 附件URL列表
	 */
	List<String> query(String html, CrawlerConfig config, T model);
	
	/**
	 * 分析内容分页
	 * 
	 * @param html HTML文本
	 * @param config 爬虫配置
	 * @param model 内容对象
	 * @param page 当前分页
	 * @return URL分页列表
	 */
	List<String> queryPage(String html, CrawlerConfig config, T model, int page);
	
	/**
	 * 原采集文档是否存在
	 * 
	 * @param url 文档采集地址
	 * @return true表示文档存在
	 */
	boolean existUrl(String url);
	
	/**
	 * 处理爬虫结果
	 * 
	 * @param config 爬虫配置
	 * @param model 模型
	 */
	void handleModel(CrawlerConfig config, T model);
	
}
